JavaScript NaN 產生時機

1. NaN 是什麼?

  • NaN = Not a Number(不是數字)。
  • 代表「預期是數字,卻得不到合法數字」的結果。
  • 型別依然是 number。
1
2
console.log(typeof NaN); // "number"


2. 什麼時候會出現 NaN?

  • 無法正確轉換成數字 時:
1
2
3
Number("hello");   // NaN
parseInt("hello"); // NaN

  • 數學運算錯誤 時:
1
2
3
0 / 0;           // NaN
Math.sqrt(-1); // NaN

  • 非法運算 時:
1
2
3
let x = "apple" * 10;
console.log(x); // NaN


3. NaN 的特性

  • NaN 不等於任何東西,包括自己
1
2
console.log(NaN === NaN); // false

  • 檢查 NaN 的方法
1
2
3
Number.isNaN(NaN); // true ✅ (推薦)
isNaN("hello"); // true (因為會先嘗試轉數字)


4. 把字串轉成數字

  • 使用 Number():
1
2
3
let age1 = Number("18");
console.log(age1, typeof age1); // 18 "number"

  • 使用 parseInt() / parseFloat():
1
2
3
4
5
6
let age2 = parseInt("18");
let price = parseFloat("18.5");

console.log(age2); // 18
console.log(price); // 18.5

  • 若字串不是數字:
1
2
3
let bad = parseInt("hello");
console.log(bad); // NaN


✅ 小結

  • NaN:不是合法數字,但型別仍是 number。
  • 出現時機:字串轉數字失敗、數學錯誤運算。
  • 檢查方法:Number.isNaN() 最精準。
  • 字串轉數字:用 Number()、parseInt()、parseFloat()。